package com.juyu.miliao.api.service;

import com.juyu.miliao.api.dao.mysql.UserInvitationIncomeDetailsDao;
import com.juyu.miliao.api.dao.redis.usercache.UserCacheVo;
import com.juyu.miliao.api.dao.redis.usercache.UserInfoCache;
import com.juyu.miliao.api.domain.UserInvitationIncomeDetails;
import com.juyu.miliao.api.domain.vo.UserInvitationIncomeByInviteUserDetailsVO;
import com.juyu.miliao.api.domain.vo.UserInvitationIncomeDetailsVO;
import com.juyu.miliao.api.util.PageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @author xuanqicheng
 */
@Service
public class UserInvitationIncomeDetailsService {

    @Autowired
    private UserInvitationIncomeDetailsDao userInvitationIncomeDetailsDao;
    @Autowired
    private UserInfoCache userInfoCache;

    public List<UserInvitationIncomeDetailsVO> getUserInvitationIncomeDetailsByInviteUserId(long inviteUserId,
                                                                                            Integer page,
                                                                                            Integer pageSize,
                                                                                            int detailType) {
        int startNum = PageUtil.getOffset(page, pageSize);
        List<UserInvitationIncomeDetailsVO> resultList = new ArrayList<>();
        List<UserInvitationIncomeDetails> list = userInvitationIncomeDetailsDao
                .selectUserInvitationIncomPage(inviteUserId, startNum, pageSize, detailType);
        for (UserInvitationIncomeDetails obj : list) {
            UserCacheVo userCacheVo = userInfoCache.getUserCacheInfo(obj.getInvitedUserId());
            UserInvitationIncomeDetailsVO vo = new UserInvitationIncomeDetailsVO();
            vo.setInvitedUserId(obj.getInvitedUserId());
            vo.setNickName(userCacheVo.getNickName());
            if (obj.getDiamonds() == null) {
                vo.setShowDiamonds("+0");
            } else {
                vo.setShowDiamonds("+" + obj.getDiamonds());
            }
            vo.setIcon(userCacheVo.getIcon());
            resultList.add(vo);
        }
        return resultList;
    }

    public UserInvitationIncomeByInviteUserDetailsVO getIncomeByInviteUserId(long inviteUserId) {
        UserInvitationIncomeDetails obj = userInvitationIncomeDetailsDao.selectUserInvitationIncom(inviteUserId);
        UserInvitationIncomeByInviteUserDetailsVO vo = new UserInvitationIncomeByInviteUserDetailsVO();
        UserCacheVo userCacheVo = userInfoCache.getUserCacheInfo(inviteUserId);
        vo.setInviteUserId(inviteUserId);
        vo.setNickName(userCacheVo.getNickName());
        vo.setShowDiamonds(obj == null ? "0.00" : obj.getDiamonds().toString());
        vo.setIcon(userCacheVo.getIcon());
        return vo;
    }
}
